home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Run Magazine ReRun: Productivity Pak 3
/
rerun-productivity-pak-iii-side-a.d64
/
runcalc 64.bas
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
12KB
|
452 lines
1 dimda$(30,30),fc$(30,30),cu$(2),da(30,30)
5 cu$(1)=" [146][157]":cu$(2)=" [157]"
6 pa=1:z=0:p=100
20 gosub10000
30 print"";
40 fort=1to10:getg$:next
50 in$=""
52 de=0
54 printcu$(pa);
56 de=de+1
60 getg$
61 ifg$=chr$(34)then60
62 ifg$<>""then70
65 ifde<7then54
68 pa=3-pa
70 ifg$=""thenifc<27thenc=c+1:gosub10000:goto30
71 ifg$="[145]"thenifrd>0thenrd=rd-1:gosub10000:goto30
72 ifg$=""thenc=0:rd=0:goto9900
73 ifg$="_"then22000
74 ifg$="[147]"then350
75 ifg$=""thenifrd<6thenrd=rd+1:gosub10000:goto30
76 ifg$=""org$="[145]"org$=""then60
77 ifg$="[136]"and(peek(53281)and15)<15thenpoke53281,(peek(53281)+1):goto60
78 ifg$="[136]"and(peek(53281)and15)=15thenpoke53281,0:goto60
79 ifg$="[137]"then400
80 ifg$="[157]"thenifc>0thenc=c-1:gosub10000:goto30
81 ifg$="[133]"thenprint"f[146]";:goto140
82 ifg$="[139]"then13000
83 ifg$="[140]"and(peek(53280)and15)=15thenpoke53280,0:goto60
84 ifg$="[140]"and(peek(53280)and15)<15thenpoke53280,peek(53280)+1:goto60
85 ifg$="[134]"then24000
86 ifg$="[138]"then25000
87 ifg$="[135]"then13400
90 ifg$=chr$(13)then300
100 ifg$=chr$(20)then200
125 iflen(in$)>30then52
130 printg$;
140 in$=in$+g$
199 goto52
200 iflen(in$)=0then60
210 iflen(in$)=1thenprintchr$(20);:goto50
220 in$=left$(in$,len(in$)-1):printchr$(20);
230 goto60
300 ifleft$(in$,1)<"a"orleft$(in$,1)>"z"then19010
305 ifmid$(in$,2,1)<"0"ormid$(in$,2,1)>"9"then19020
306 ifmid$(in$,3,1)<"0"ormid$(in$,3,1)>":"then19030
310 ifval(mid$(in$,2,2))<0orval(mid$(in$,2,2))>29then19000
320 ifmid$(in$,3,1)<>":"andmid$(in$,4,1)<>":"then19040
330 goto500
350 gosub12500:ifg$="n"then9900
355 run
400 printchr$(19);:print
410 printchr$(18);" maximum precision (0 to 6) press key "
420 getg$:ifg$<"0"org$>"6"then420
430 p=10^val(g$)
440 goto9900
500 gosub12000
520 ifmid$(in$,3,1)=":"thens=4:goto540
530 ifmid$(in$,4,1)=":"thens=5
540 ifmid$(in$,s,1)=chr$(133)then2000
550 ifmid$(in$,s,1)=""thenda$(r,cd)="":da(r,cd)=0:goto9900
1450 iffc$(r,cd)<>""thengoto11000
1500 t$=mid$(in$,s,1)
1510 ift$<"0"ort$>"9"thenift$<>"+"andt$<>"-"then1560
1512 da(r,cd)=val(mid$(in$,s,19))
1513 da$(r,cd)=mid$(in$,s,19)
1515 iflen(da$(r,cd))=9then1590
1518 iflen(da$(r,cd))>9then1580
1520 forx=1to9-len(da$(r,cd))
1530 da$(r,cd)=" "+da$(r,cd)
1540 next
1545 goto9900
1560 da$(r,cd)=mid$(in$,s,9):goto9900
1580 da$(r,cd)="*********"
1590 goto9900
2000 ifmid$(in$,s+1,1)="t"andlen(in$)=s+1then2010
2005 goto2020
2010 ifleft$(in$,2)<>"a0"then19050
2015 z=1:ct=cd:rt=0:goto9900
2020 ifmid$(in$,s+1,1)="o"andlen(in$)=s+1then2030
2025 goto2040
2030 z=0:goto9900
2040 ifmid$(in$,s+1,3)="sum"thengosub14000:goto9900
2050 ifmid$(in$,s+1,3)="min"thengosub14000:goto9900
2060 ifmid$(in$,s+1,3)="max"thengosub14000:goto9900
2070 ifmid$(in$,s+1,3)="avg"thengosub14000:goto9900
2080 ifmid$(in$,s+1,3)="cop"thengosub14000:gosub26010:goto2085
2081 goto2110
2085 ifr1=r2then2100
2088 forx=r1tor2
2090 da(x,c1)=da(r,cd):da$(x,c1)=da$(r,cd)
2095 next:goto9900
2100 forx=c1toc2
2103 da(r1,x)=da(r,cd):da$(r1,x)=da$(r,cd)
2106 next:goto9900
2110 ifmid$(in$,s+1,1)="c"andlen(in$)=s+1then2120
2115 goto2130
2120 gosub12500
2125 ifg$="n"thengoto9900
2128 da(r,cd)=0:da$(r,cd)="":fc$(r,cd)="":goto9900
2130 ifmid$(in$,s+1,1)="v"andlen(in$)=s+1then2140
2135 goto2150
2140 gosub12600:goto9900
2145 goto9900
2150 ifmid$(in$,s+1,1)="j"andlen(in$)=s+1then2160
2155 goto2500
2160 c=val(mid$(in$,2,2)):ifc>27thenc=27
2162 ifasc(left$(in$,1))>84thenrd=6
2163 ifasc(left$(in$,1))<=84thenrd=0
2165 goto9900
2500 ifmid$(in$,s+1,1)<"a"ormid$(in$,s+1,1)>"z"then19060
2505 ifmid$(in$,s+2,1)<"0"ormid$(in$,s+2,1)>"9"then19070
2510 ifval(mid$(in$,s+2,2))<0orval(mid$(in$,s+2,2))>29then19080
2580 t$=mid$(in$,s+3,1)
2590 ift$="+"ort$="-"ort$="*"ort$="/"ort$="^"then2650
2600 t$=mid$(in$,s+4,1)
2610 ift$="+"ort$="-"ort$="*"ort$="/"ort$="^"then2670
2620 goto19090
2650 s1=s+4:goto2680
2670 s1=s+5
2680 ifmid$(in$,s1,1)<"a"ormid$(in$,s1,1)>"z"then3000
2690 ifmid$(in$,s1+1,1)<"0"ormid$(in$,s1+1,1)>"9"then19100
2700 ifval(mid$(in$,s1+1,2))<0orval(mid$(in$,s1+1,2))>29then19110
2710 goto3100
3000 ift$="/"andval(mid$(in$,s1,19))=0then19120
3100 fc$(r,cd)=mid$(in$,s,19)
9900 gosub10000
9910 printchr$(19);
9999 goto50
10000 print"[147] "
10015 ifz=1thenprinttab(5);ct;tab(16);c+1;tab(27);c+2:goto10021
10020 printtab(5);c;tab(16);c+1;tab(27);c+2
10021 ifz=1then10026
10022 printchr$(65+rd);:printtab(2);da$(rd,c);
10023 printtab(13);da$(rd,c+1);
10024 printtab(24);da$(rd,c+2)
10025 goto10030
10026 printchr$(65+rt);:printtab(2);da$(rt,ct);
10027 printtab(13);da$(rt,c+1);
10028 printtab(24);da$(rt,c+2)
10030 forr=rd+1tord+19
10040 printchr$(65+r);
10045 ifz=1thenprinttab(2);da$(r,ct);:goto10060
10050 printtab(2);da$(r,c);
10060 printtab(13);da$(r,c+1);
10070 printtab(24);da$(r,c+2)
10080 next
10090 return
11000 printchr$(19);:print
11005 printchr$(18);"protected formula ";fc$(r,cd)
11010 getg$:ifg$=""then11010
11020 goto20
12000 r=asc(left$(in$,1))-65
12010 cd=val(mid$(in$,2,2))
12020 return
12500 printchr$(19);:print
12505 printchr$(18);" are you sure press 'y' or 'n' "
12510 getg$:ifg$<>"y"andg$<>"n"then12510
12520 return
12550 printchr$(19);:print
12555 printchr$(18);" working please wait... "
12560 return
12600 printchr$(19);:print
12605 printchr$(18);
12606 iffc$(r,cd)<>""thenprint"form. ";fc$(r,cd);" - ";
12607 print"val.";da(r,cd)
12610 getg$:ifg$=""then12610
12620 return
13000 printchr$(19);:print
13005 printchr$(18);"press 'space' to print-'return' to exit"
13010 getg$:ifg$<>" "andg$<>chr$(13)then13010
13020 ifg$=chr$(13)then9900
13025 gosub12550
13030 open4,4
13040 r=0:cd=0
13050 iffc$(r,cd)<>""then13080
13060 cd=cd+1:ifcd=30thencd=0:r=r+1:ifr=26then13300
13065 iffc$(r,cd)<>""then13080
13070 goto13060
13080 print#4,chr$(r+65);cd;
13090 print#4," ";fc$(r,cd)
13100 goto13060
13300 print#4,chr$(10)
13310 print#4
13320 close4:goto9900
13400 printchr$(147):print" print spreadsheet"
13410 print:print
13420 print" enter the top left cell
13430 [153]" to be printed or
13440 print" press 'return' to exit"
13450 print:g$=""
13460 input" ";g$:ifg$=""then9900
13465 ifg$<"a0"org$>"z9"then13400
13467 r1=asc(left$(g$,1))-65:tc=val(mid$(g$,2)):iftc>29then13400
13470 printchr$(147):print" print spreadsheet"
13472 print:print
13474 print" enter the bottom right cell
13476 [153]" to be printed or
13478 print" press 'return' to exit"
13480 print:t$=""
13482 input" ";t$:ift$=""then9900
13484 ift$<"a0"org$>"z9"then13470
13485 gosub13700
13486 r2=asc(left$(t$,1))-65:t=val(mid$(t$,2)):ift>29ort<tcthen13470
13487 ifr2<r1then13470
13488 gosub13700
13490 t$=chr$(16)
13500 open4,4
13505 print#4,chr$(10)
13525 forr=r1tor2
13535 iftc>tthengosub13700
13540 print#4," ";da$(r,tc);
13545 iftc+1>tthen13600
13550 forx=1to11-len(da$(r,tc)):print#4," ";:next:print#4,da$(r,tc+1);
13555 iftc+2>tthen13600
13560 forx=1to11-len(da$(r,tc+1)):print#4," ";:next:print#4,da$(r,tc+2);
13565 iftc+3>tthen13600
13570 forx=1to11-len(da$(r,tc+2)):print#4," ";:next:print#4,da$(r,tc+3);
13575 iftc+4>tthen13600
13577 forx=1to11-len(da$(r,tc+3)):print#4," ";:next:print#4,da$(r,tc+4);
13580 iftc+5>tthen13600
13585 forx=1to11-len(da$(r,tc+4)):print#4," ";:next:print#4,da$(r,tc+5);
13590 iftc+6>tthen13600
13595 forx=1to11-len(da$(r,tc+5)):print#4," ";:next:print#4,da$(r,tc+6);
13600 print#4,chr$(13);:next
13610 tc=tc+7:iftc>tthenprint#4:close4:goto9900
13620 printchr$(147):print:print
13630 print" ...... more to come ......"
13635 print
13640 print" please align printer paper"
13650 print" and press 'space' to continue"
13655 getg$:ifg$<>" "then13655
13656 gosub13700
13660 goto13505
13700 printchr$(147):print:print
13710 print" ...... working ......"
13720 return
14000 s=s+3
14010 ifmid$(in$,s+1,1)<"a"ormid$(in$,s+1,1)>"z"then19060
14020 ifmid$(in$,s+2,1)<"0"ormid$(in$,s+2,1)>"9"then19070
14030 ifmid$(in$,s+3,1)<"-"ormid$(in$,s+3,1)>"9"then19070
14040 ifval(mid$(in$,s+2,2))<0orval(mid$(in$,s+2,2))>29then19080
14050 ifmid$(in$,s+3,1)<>"-"andmid$(in$,s+4,1)<>"-"then19130
14060 ifmid$(in$,s+4,1)="-"thens1=5+s:goto14070
14065 s1=4+s
14070 ifmid$(in$,s1,1)<"a"ormid$(in$,s1,1)>"z"then19140